package team.niit.service;

import team.niit.entity.StudentEntity;

import java.util.List;

public interface StudentService {

    /**
     * 修改密码
     * @param id 学号
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     * @return 返回成功与否
     */
    boolean modifyPassword(String id, String oldPassword, String newPassword) ;

    /**
     * 登录接口
     * @param student 传入的要登陆学生实体，含有账号和密码两个属性
     * @return  返回登录的学生信息，为空或为一个带有所有属性的StudentEntity
     */
    StudentEntity login(StudentEntity student);

    /**
     * 重置密码
     * @param id 学号
     * @param password 新密码
     * @param phone 手机号
     * @return 返回成功与否
     */
    boolean retrievePassword(String id, String password, String phone);

    /**
     * 按id查询学生
     * @param id 学生id
     * @return 返回查找到的学生
     */
    StudentEntity queryStudentById(String id);

    /**
     * 学生根据id修改学生
     * @param student 学生实体，包含要修改的值
     * @return 返回修改后的学生
     */
    StudentEntity modifyStudentById(StudentEntity student);


    /**
     * 管理员添加学生
     * @param student 要添加的学生实体
     * @return 成功与否
     */
    boolean addStudent(StudentEntity student);

    /**
     * 管理员修改学生信息
     * @param student 要修改的学生实体
     * @return 成功与否
     */
    StudentEntity modifyStudent(StudentEntity student);

    /**
     * 管理员删除学生
     * @param id 学号
     * @return 成功与否
     */
    boolean deleteStudentById(String id);


    /**
     * 查询所有学生
     * @return 返回查询结果集
     */
    List<StudentEntity> selectStudentList();

    /**
     * 分页查询
     * @param size 每页数量
     * @param pageNumber 第几页
     * @return 返回该页所有数据
     */
    List<StudentEntity> pagingQuery(int size, int pageNumber);

    /**
     * 查询学生数据条数
     * @return 返回学生数据条数
     */
    int count();
    /**
     * 查询所有学生（课表）
     * @param id 学号
     * @return 返回学生集合
     */
    StudentEntity[][] queryAllStudent(String id);

    /**
     * 删除学生
     * @param studentId 学生id
     * @return
     */
    int dropStudent(String studentId);
}
